&Scoped-define WINDOW-NAME CURRENT-WINDOW

/* Temp-Table and Buffer definitions                                    */
DEFINE TEMP-TABLE ab_unmap
       FIELD login AS CHARACTER FORMAT "X(256)":U
       FIELD password AS CHARACTER FORMAT "X(256)":U
       FIELD retour AS CHARACTER FORMAT "X(256)":U .


/*------------------------------------------------------------------------

  File:

  Description:

  Input Parameters:
      <none>

  Output Parameters:
      <none>

  Author:

  Created:

------------------------------------------------------------------------*/
/*           This .W file was created with AppBuilder.                  */
/*----------------------------------------------------------------------*/

/* Create an unnamed pool to store all the widgets created
     by this procedure. This is a good default which assures
     that this procedure's triggers and internal procedures
     will execute in this procedure's storage, and that proper
     cleanup will occur on deletion of the procedure. */
CREATE WIDGET-POOL.

/* ***************************  Definitions  ************************** */

/* Preprocessor Definitions ---                                         */

/* Parameters Definitions ---                                           */

/* Local Variable Definitions ---                                       */

  DEF VAR LoginID AS CHAR NO-UNDO.
  DEF VAR flag-ok AS CHAR NO-UNDO.
  DEF VAR buf-nocli LIKE adra.noadr NO-UNDO.
  DEF VAR buf-csmt  LIKE adra.csmt  NO-UNDO.
  DEF VAR buf-suiv    AS CHAR NO-UNDO.
  DEF VAR a-lang          AS    INTEGER                   NO-UNDO.

  DEF            VAR buf-prefix      LIKE doce.prefix                NO-UNDO.
  DEF            VAR buf-nodoc       LIKE doce.nodoc                 NO-UNDO.
  DEF            VAR buf-retour      AS   CHARACTER                  NO-UNDO.



/* ********************  Preprocessor Definitions  ******************** */

&Scoped-define PROCEDURE-TYPE Web-Object
&Scoped-define DB-AWARE no

&Scoped-define WEB-FILE tbr_login.htm

/* Name of first Frame and/or Browse and/or first Query                 */
&Scoped-define FRAME-NAME Web-Frame

/* Standard List Definitions                                            */
&Scoped-Define ENABLED-OBJECTS ab_unmap.retour ab_unmap.login ~
ab_unmap.password
&Scoped-Define DISPLAYED-OBJECTS ab_unmap.retour ab_unmap.login ~
ab_unmap.password

/* Custom List Definitions                                              */
/* List-1,List-2,List-3,List-4,List-5,List-6                            */

/* ***********************  Control Definitions  ********************** */


/* Definitions of the field level widgets                               */

/* ************************  Frame Definitions  *********************** */

DEFINE FRAME Web-Frame
     ab_unmap.retour AT ROW 1 COL 1 HELP
          "" NO-LABEL FORMAT "X(256)":U
          VIEW-AS FILL-IN
          SIZE 20 BY 1
     ab_unmap.login AT ROW 1 COL 1 HELP
          "" NO-LABEL FORMAT "X(256)":U
          VIEW-AS FILL-IN
          SIZE 20 BY 1
     ab_unmap.password AT ROW 1 COL 1 HELP
          "" NO-LABEL FORMAT "X(256)":U
          VIEW-AS FILL-IN
          SIZE 20 BY 1
    WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
         SIDE-LABELS
         AT COL 1 ROW 1
         SIZE 60.6 BY 14.14.


/* *********************** Procedure Settings ************************ */

/* Settings for THIS-PROCEDURE
   Type: Web-Object
   Allow: Query
   Frames: 1
   Add Fields to: Neither
   Editing: Special-Events-Only
   Events: web.output,web.input
   Other Settings: COMPILE
   Temp-Tables and Buffers:
      TABLE: ab_unmap W "?" ?
      ADDITIONAL-FIELDS:
          FIELD login AS CHARACTER FORMAT "X(256)":U
          FIELD password AS CHARACTER FORMAT "X(256)":U
          FIELD retour AS CHARACTER FORMAT "X(256)":U
      END-FIELDS.
   END-TABLES.
 */

/* *************************  Create Window  ************************** */

/* DESIGN Window definition (used by the UIB)
  CREATE WINDOW w-html ASSIGN
         HEIGHT             = 14.14
         WIDTH              = 60.6.
/* END WINDOW DEFINITION */
                                                                        */

/* *********************** Included-Libraries ************************* */

{src/web2/html-map.i}




/* ***********  Runtime Attributes and AppBuilder Settings  *********** */

/* SETTINGS FOR WINDOW w-html
  VISIBLE,,RUN-PERSISTENT                                               */
/* SETTINGS FOR FRAME Web-Frame
   UNDERLINE                                                            */
/* SETTINGS FOR FILL-IN ab_unmap.login IN FRAME Web-Frame
   ALIGN-L EXP-LABEL EXP-FORMAT EXP-HELP                                */
/* SETTINGS FOR FILL-IN ab_unmap.password IN FRAME Web-Frame
   ALIGN-L EXP-LABEL EXP-FORMAT EXP-HELP                                */
/* SETTINGS FOR FILL-IN ab_unmap.retour IN FRAME Web-Frame
   ALIGN-L EXP-LABEL EXP-FORMAT EXP-HELP                                */






/* ************************  Main Code Block  ************************* */

/* Standard Main Block that runs adm-create-objects, initializeObject
 * and process-web-request.
 * The bulk of the web processing is in the Procedure process-web-request
 * elsewhere in this Web object.
 */
{src/web2/template/hmapmain.i}


/* **********************  Internal Procedures  *********************** */

PROCEDURE adm-create-objects :
/*------------------------------------------------------------------------------
  Purpose:     Create handles for all SmartObjects used in this procedure.
               After SmartObjects are initialized, then SmartLinks are added.
  Parameters:  <none>
------------------------------------------------------------------------------*/

END PROCEDURE.

PROCEDURE aff_label :
/*------------------------------------------------------------------------------
  Purpose:
  Parameters:  <none>
  Notes:
------------------------------------------------------------------------------*/

  DEF INPUT PARAMETER num  AS INTEGER NO-UNDO.

  FIND erreur WHERE erreur.noerr = num
                AND erreur.lang  = a-lang NO-LOCK NO-ERROR.
  {&out} erreur.libel.

END PROCEDURE.

PROCEDURE calcul_mtligne :
/*------------------------------------------------------------------------------
  Purpose:
  Parameters:  <none>
  Notes:
------------------------------------------------------------------------------*/

DEF            VAR buf-pumb         LIKE docld.punite NO-UNDO.
DEF            VAR buf-punite       LIKE docld.punite NO-UNDO.
DEF            VAR buf-unitp        LIKE docld.unitp  NO-UNDO.
DEF            VAR buf-nocpt        LIKE docld.nocpt  NO-UNDO.
DEF            VAR buf-taxi         LIKE docld.taxi   NO-UNDO.

{calcul_ligne.i}

END PROCEDURE.

PROCEDURE htmOffsets :
/*------------------------------------------------------------------------------
  Purpose:     Runs procedure to associate each HTML field with its
               corresponding widget name and handle.
  Parameters:
  Notes:
------------------------------------------------------------------------------*/
  RUN readOffsets ("{&WEB-FILE}":U).
  RUN htmAssociate
    ("login":U,"ab_unmap.login":U,ab_unmap.login:HANDLE IN FRAME {&FRAME-NAME}).
  RUN htmAssociate
    ("password":U,"ab_unmap.password":U,ab_unmap.password:HANDLE IN FRAME {&FRAME-NAME}).
  RUN htmAssociate
    ("retour":U,"ab_unmap.retour":U,ab_unmap.retour:HANDLE IN FRAME {&FRAME-NAME}).
END PROCEDURE.


PROCEDURE modification_document :
/*------------------------------------------------------------------------------
  Purpose:
  Parameters:  <none>
  Notes:
------------------------------------------------------------------------------*/

DEF            VAR i             AS   INTEGER             NO-UNDO.
DEF            VAR j             AS   INTEGER             NO-UNDO.
DEF            VAR buf-qte       AS   INTEGER             NO-UNDO.
DEF            VAR buf-ref       AS   CHARACTER           NO-UNDO.
DEF            VAR buf-art       AS   CHARACTER           NO-UNDO.
DEF            VAR flag-monnaie  AS LOGICAL               NO-UNDO.

DO WITH FRAME {&FRAME-NAME}:

   FIND doce WHERE doce.nosoc = 1
               AND doce.typdoc = "PA"
               AND doce.prefix = buf-prefix
               AND doce.nodoc  = buf-nodoc NO-ERROR.

   IF NOT AVAILABLE doce THEN RETURN.
   IF doce.noadrf = buf-nocli THEN RETURN.

   ASSIGN doce.noadrl = buf-nocli
          doce.noadrf = buf-nocli.

   FIND adrd WHERE adrd.nosoc = doce.nosoc
               AND adrd.noadr = doce.noadrl
               AND adrd.csmt  = doce.csmtl NO-LOCK NO-ERROR.

   ASSIGN doce.totme  = 0
          doce.totmtn = 0
          doce.totmb  = 0
          doce.totqte = 0
          flag-monnaie = TRUE.

   ASSIGN doce.taux   = adrd.codicha
          doce.codmon = adrd.codmon.

   FIND FIRST mon WHERE mon.nosoc  = doce.nosoc
                    AND mon.codmon = doce.codmon
                    AND mon.boucl  = ""
                    AND mon.datc  <= doce.datdoc NO-LOCK NO-ERROR.
   IF AVAILABLE mon THEN ASSIGN doce.cours = mon.cours
                                doce.unit  = mon.unit.
   ELSE ASSIGN doce.cours = 1
               doce.unit  = 1.

   FOR EACH docld WHERE docld.nosoc  = doce.nosoc
                    AND docld.typdoc = doce.typdoc
                    AND docld.prefix = doce.prefix
                    AND docld.nodoc  = doce.nodoc
                    AND docld.ref   <> "":

       RUN calcul_mtligne.
   END.

END.
END PROCEDURE.

PROCEDURE outputHeader :
/*------------------------------------------------------------------------
  Purpose:     Output the MIME header, and any "cookie" information needed
               by this procedure.
  Parameters:  <none>
  Notes:       In the event that this Web object is state-aware, this is
               a good place to set the WebState and WebTimeout attributes.
------------------------------------------------------------------------*/

  /* To make this a state-aware Web object, pass in the timeout period
   * (in minutes) before running outputContentType.  If you supply a
   * timeout period greater than 0, the Web object becomes state-aware
   * and the following happens:
   *
   *   - 4GL variables webState and webTimeout are set
   *   - a cookie is created for the broker to id the client on the return trip
   *   - a cookie is created to id the correct procedure on the return trip
   *
   * If you supply a timeout period less than 1, the following happens:
   *
   *   - 4GL variables webState and webTimeout are set to an empty string
   *   - a cookie is killed for the broker to id the client on the return trip
   *   - a cookie is killed to id the correct procedure on the return trip
   *
   * For example, set the timeout period to 5 minutes.
   *
   *   setWebState (5.0).
   */

  /* Output additional cookie information here before running outputContentType.
   *   For more information about the Netscape Cookie Specification, see
   *   http://home.netscape.com/newsref/std/cookie_spec.html
   *
   *   Name         - name of the cookie
   *   Value        - value of the cookie
   *   Expires date - Date to expire (optional). See TODAY function.
   *   Expires time - Time to expire (optional). See TIME function.
   *   Path         - Override default URL path (optional)
   *   Domain       - Override default domain (optional)
   *   Secure       - "secure" or unknown (optional)
   *
   *   The following example sets custNum=23 and expires tomorrow at (about)
   *   the same time but only for secure (https) connections.
   *
   *   RUN SetCookie IN web-utilities-hdl
   *     ("custNum":U, "23":U, TODAY + 1, TIME, ?, ?, "secure":U).
   */

   output-content-type ("text/html":U).

END PROCEDURE.

PROCEDURE process-web-request :
/*------------------------------------------------------------------------
  Purpose:     Process the web request.
  Notes:
------------------------------------------------------------------------*/

  /* STEP 0 -
   * Output the MIME header and set up the object as state-less or state-aware.
   * This is required if any HTML is to be returned to the browser.
   *
   * NOTE: Move 'RUN outputHeader.' to the GET section below if you are going
   * to simulate another Web request by running a Web Object from this
   * procedure.  Running outputHeader precludes setting any additional cookie
   * information.
   */

  /* Describe whether to receive FORM input for all the fields.  For example,
   * check particular input fields (using GetField in web-utilities-hdl).
   * Here we look at REQUEST_METHOD.
   */

  IF get-cookie("SessionId") <> "" THEN
     ASSIGN buf-nocli  = INTEGER(ENTRY(1,get-cookie("SessionId")))
            buf-prefix = ENTRY(2,get-cookie("SessionId"))
            buf-nodoc  = INTEGER(ENTRY(3,get-cookie("SessionId"))).

  IF REQUEST_METHOD = "POST":U THEN DO:
    /* STEP 1 -
     * Copy HTML input field values to the Progress form buffer. */
    RUN inputFields.

    /* STEP 2 -
     * Open the database or SDO query and and fetch the first record. */
    RUN findRecords.

    IF get-field("login") <> "" THEN DO:
       LoginID = get-field("login") + "/0".

       ASSIGN buf-nocli = INTEGER(ENTRY(1,LoginID,"/")) NO-ERROR.
              buf-csmt  = INTEGER(ENTRY(2,LoginID,"/")) NO-ERROR.

       FIND parmt WHERE parmt.nosoc = 1
                    AND parmt.nomuti = ""
                    AND parmt.nompar = "PWDWEB" NO-LOCK NO-ERROR.
       IF AVAILABLE parmt AND get-field("password") = parmt.valpar THEN DO:
          RUN SetCookie IN web-utilities-hdl ("SessionId",STRING(buf-nocli)
                                               + "," + buf-prefix
                                               + "," + STRING(buf-nodoc)
                                               + "," + "TEL"
                                               ,?,?,?,?,?).

          IF buf-nodoc <> 0 THEN RUN modification_document.
       END.
       ELSE DO:
          FIND adra WHERE adra.nosoc = 1
                      AND adra.noadr = buf-nocli
                      AND adra.csmt  = buf-csmt NO-LOCK NO-ERROR.

          IF AVAILABLE adra                      AND
             adra.pwdweb <> ""                   AND
             get-field("password") = adra.pwdweb THEN DO:
             RUN SetCookie IN web-utilities-hdl ("SessionId",STRING(buf-nocli)
                                                  + "," + buf-prefix
                                                  + "," + STRING(buf-nodoc)
                                                  + "," + "WEB"
                                                  ,?,?,?,?,?).
             IF buf-nodoc <> 0 THEN RUN modification_document.
          END.
       END.

    END.

    buf-retour = get-field("retour").

    /* STEP 3 -
     * AssignFields will save the data in the frame.
     * (it automatically upgrades the lock to exclusive while doing the update)
     *
     *  If a new record needs to be created set AddMode to true before
        running assignFields.
     *     setAddMode(TRUE).
     * RUN assignFields. */

    /* STEP 4 -
     * Decide what HTML to return to the user. Choose STEP 4.1 to simulate
     * another Web request -OR- STEP 4.2 to return the original form (the
     * default action).
     *
     * STEP 4.1 -
     * To simulate another Web request, change the REQUEST_METHOD to GET
     * and RUN the Web object here.  For example,
     */

    RUN outputHeader.

    /* STEP 4.2 -
     * To return the form again, set data values, display them, and output
     * them to the WEB stream.
     *
     * STEP 4.2a -
     * Set any values that need to be set, then display them. */
    RUN displayFields.

    /* STEP 4.2b -
     * Enable objects that should be enabled. */
    RUN enableFields.


    retour:SCREEN-VALUE IN FRAME {&FRAME-NAME} = buf-retour.

    /* STEP 4.2c -
     * OUTPUT the Progress form buffer to the WEB stream. */
    RUN outputFields.

  END. /* Form has been submitted. */

  /* REQUEST-METHOD = GET */
  ELSE DO:


    /* This is the first time that the form has been called. Just return the
     * form.  Move 'RUN outputHeader.' here if you are going to simulate
     * another Web request. */

    RUN outputHeader.

    /* STEP 1 -
     * Open the database or SDO query and and fetch the first record. */
    RUN findRecords.

    /* Return the form again. Set data values, display them, and output them
     * to the WEB stream.
     *
     * STEP 2a -
     * Set any values that need to be set, then display them. */
    RUN displayFields.

    /* STEP 2b -
     * Enable objects that should be enabled. */
    RUN enableFields.

    /* STEP 2c -
     * OUTPUT the Progress from buffer to the WEB stream. */
    RUN outputFields.

  END.

  /* Show error messages. */
  IF AnyMessage() THEN
  DO:
     /* ShowDataMessage may return a Progress column name. This means you
      * can use the function as a parameter to HTMLSetFocus instead of
      * calling it directly.  The first parameter is the form name.
      *
      * HTMLSetFocus("document.DetailForm",ShowDataMessages()). */
     ShowDataMessages().
  END.

END PROCEDURE.








